home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #2 / Ham Radio 2000 - Volume 2.iso / HAMV2 / TCP_IP / TNOS230S / PPPLCP.H < prev    next >
C/C++ Source or Header  |  1997-05-24  |  3KB  |  88 lines

  1. #ifndef _PPPLCP_H
  2. #define _PPPLCP_H
  3.  
  4.                     /* LCP option types */
  5. #define LCP_MRU            0x01
  6. #define LCP_ACCM        0x02
  7. #define LCP_AUTHENT        0x03
  8. #define LCP_ENCRYPT        0x04
  9. #define LCP_MAGIC        0x05
  10. #define LCP_QUALITY        0x06
  11. #define LCP_PFC            0x07
  12. #define LCP_ACFC        0x08
  13. #define LCP_OPTION_LIMIT    0x08    /* highest # we can handle */
  14.  
  15. /* Table for LCP configuration requests */
  16. struct lcp_value_s {
  17.     int16 negotiate;        /* negotiation flags */
  18. #define LCP_N_MRU        (1 << LCP_MRU)
  19. #define LCP_N_ACCM        (1 << LCP_ACCM)
  20. #define LCP_N_AUTHENT        (1 << LCP_AUTHENT)
  21. #define LCP_N_ENCRYPT        (1 << LCP_ENCRYPT)
  22. #define LCP_N_MAGIC        (1 << LCP_MAGIC)
  23. #define LCP_N_QUALITY        (1 << LCP_QUALITY)
  24. #define LCP_N_PFC        (1 << LCP_PFC)
  25. #define LCP_N_ACFC        (1 << LCP_ACFC)
  26.  
  27.     int16 mru;            /* Maximum Receive Unit */
  28.     uint32 accm;            /* Async Control Char Map */
  29.     int16 authentication;        /* Authentication protocol */
  30.     uint32 magic_number;        /* Magic number value */
  31. #if 0
  32.     int16 encryption;        /* Encryption protocol */
  33.     int32 reporting_period;        /* Link Quality reporting period */
  34. #endif
  35. };
  36.  
  37. /* Other configuration option values */
  38. #ifdef __GNUC__
  39. #define LCP_ACCM_DEFAULT    0xffffffffLU
  40. #else
  41. #define LCP_ACCM_DEFAULT    0xffffffffL
  42. #endif
  43. #define LCP_MRU_DEFAULT    1500
  44. #define LCP_MRU_HI    4096        /* High MRU limit */
  45. #define LCP_MRU_LO    128        /* Lower MRU limit */
  46.  
  47. /*
  48.  *    local.want:    Options to request.
  49.  *            Contains desired value.
  50.  *            Only non-default options need to be negotiated.
  51.  *            Initially, all are default.
  52.  *    local.will:    Options to accept in a NAK from remote.
  53.  *    local.work:    Options currently being negotiated.
  54.  *            Value is valid only when negotiate bit is set.
  55.  *
  56.  *    remote.want:    Options to suggest by NAK if not present in REQ.
  57.  *            Contains desired value.
  58.  *    remote.will:    Options to accept in a REQ from remote.
  59.  *    remote.work:    Options currently being negotiated.
  60.  *            Value is valid only when negotiate bit is set.
  61.  */
  62.  
  63. struct lcp_side_s {
  64.     int16    will_negotiate;
  65.     struct lcp_value_s want;
  66.     struct lcp_value_s work;
  67. };
  68.  
  69. /* LCP control block */
  70. struct lcp_s {
  71.     struct lcp_side_s local;
  72.     struct lcp_side_s remote;
  73. };
  74.  
  75. #define LCP_REQ_TRY    20        /* REQ attempts */
  76. #define LCP_NAK_TRY    10        /* NAK attempts */
  77. #define LCP_TERM_TRY    10        /* tries on TERM REQ */
  78. #define LCP_TIMEOUT    3        /* Seconds to wait for response */
  79.  
  80.  
  81. int doppp_lcp    (int argc, char *argv[], void *p);
  82.  
  83. void ppp_ready    (struct ppp_s *ppp_p);
  84.  
  85. void lcp_init    (struct ppp_s *ppp_p);
  86.  
  87. #endif /* _PPPLCP_H */
  88.